package callable;

import java.util.concurrent.Callable;

/**
 * Callable
 * <p>
 * 与Runnable方式的对比
 * > call()可以有返回值，更灵活。
 * > call()可以使用throws的方式处理异常，更灵活
 * > Callable使用了泛型，可以具体指明call()的返回值类型，更灵活。
 * <p>
 * 缺点：
 * 在主线程中需要获取分线程call()的返回值，则此时的主线程是阻塞状态的。
 */

// 1.创建一个实现Callable接口的实现类
public class NumThread implements Callable {

    // 2.实现call()方法，将此线程需要执行的操作声明在call()方法中
    @Override
    public Object call() throws Exception {
        int sum = 0;
        for (int i = 0; i < 100; i += 2) {
            System.out.println(i);
            sum += i;
        }
        return sum;
    }
}
